/**
 * Created by awebone on 2017/8/17.
 * 应用程序的启动入口文件
 */

//加载express模块
var express=require('express');
//加载模板处理模块
var swig=require('swig');

//加载数据库模块
var mongoose=require('mongoose');
//加载body-parser模块，用来处理post提交的数据
var bodyParser=require('body-parser');
//加载cookies模块
var cookies=require('cookies');

var app=express();

var User=require('./models/User');

//设置静态文件托管
app.use('/public',express.static(__dirname+'/public'));


//配置应用模板
//第一个参数：模板引擎的名称及后缀，第二个参数：用于解析处理模板内容的方法
app.engine('html',swig.renderFile);
//设置模板文件存放的目录
app.set('views','./views');
//注册所使用的模板引擎，第二个参数和app.engine的第一个参数一致
app.set('view engine','html');
//在开发过程中，需要取消模板缓存
swig.setDefaults({cache:false});

//设置body-parser
app.use(bodyParser.urlencoded({extended:true}));

//设置cookies
app.use(function (req, res, next) {
    req.cookies=new cookies(req,res);

    //解析登录用户的cookie信息
    req.userInfo={};
    if(req.cookies.get('userInfo')){
        try{
            req.userInfo=JSON.parse(req.cookies.get('userInfo'));

            //获取登录用户的类型，是否是管理员
            User.findById(req.userInfo._id).then(function (userInfo) {
                req.userInfo.isAdmin=Boolean(userInfo.isAdmin);
                next();
            })
        }catch (e){
            next();
        }
    }else {
        next();
    }

});

//根据不同的功能划分模块
app.use('/admin',require('./routers/admin'));
app.use('/api',require('./routers/api'));
app.use('/',require('./routers/main'));

mongoose.connect('mongodb://localhost:27017/blog-express',function (err) {
    if(err){
        console.log(err);
    }else {
        console.log('数据库连接成功');
        app.listen(8081);
    }
});